Companies and organizations operate computer networks that interconnect numerous computing systems to support their operations. The computing systems can be located in a single geographical location (e.g., as part of a local network) or located in multiple distinct geographical locations (e.g., connected via one or more private or public intermediate networks). Data centers may house significant numbers of interconnected computing systems, such as, e.g., private data centers operated by a single organization and public data centers operated by third parties to provide computing resources to customers. Public and private data centers may provide network access, power, hardware resources (e.g., computing and storage), and secure installation facilities for hardware owned by the data center, an organization, or by other customers.
Virtualization technologies may allow a single physical computing machine (e.g., a server) to host one or more instances of virtual machines that appear and operate as independent computer machines to a connected computer user. With virtualization, the single physical computing device can create, maintain or delete virtual machines in a dynamic manner. In turn, users can request computer resources from a data center and be provided with varying numbers of virtual machine resources on an “as needed” basis or at least an “as requested” basis.
Virtual machine instances hosted on public data centers (i.e., a cloud computing services provider) are used to provide a variety of computing services, e.g., a website backed by virtual machine instances running web-servers, application servers, and database applications. Because demand for these services varies over time, the customer or service provider may change the number of virtual machines used to provide the service. A significant benefit for an enterprise using public data centers to host virtual machine instances is that the customer can adjust the number of virtual machine instances used (or computing resources provisioned on the virtual machines) to provide the computing services without having to purchase and maintain the underlying physical computing systems.